package com.sigmatrix.h5.service;

import java.util.Map;

import com.sigmatrix.h5.exception.ServiceException;
import com.sigmatrix.h5.response.Response;
import com.sigmatrix.h5.web.mode.QrCode;
import com.sigmatrix.h5.web.vo.QRCodeVo;

public interface QrCodeService {
	
	/**
	 * 
	 *@Title: findByQrCode
	 *@Description: 通过qrCode查询，会先查一级码表，如果没有就查多级码表
	 *@return QrCode
	 *@author MH
	 *@date 2017年12月7日 下午1:05:21
	 *@param qrCode
	 *@return
	 */
	QrCode findByQrCode(String qrCode);
	
	/**
	 *@Title: queryCodeForUpdateOutOrInStorage
	 *@Description: 已存在的出入库单出入库时查询码
	 *@return Response
	 *@author youjun
	 *@date 2017年6月29日 下午2:54:11
	 *@param qRCodeVo
	 *@return
	 * @throws ServiceException 
	 */
	Response queryCodeForUpdateOutOrInStorage(QRCodeVo qRCodeVo) throws ServiceException;

	/**
	 *@Title: queryCodeForAddOutOrInStorage
	 *@Description: 新增的出入库单出入库时查询码
	 *@return Response
	 *@author youjun
	 *@date 2017年7月3日 下午9:13:44
	 *@param qRCodeVo
	 *@return
	 */
	Response queryCodeForAddOutOrInStorage(QRCodeVo qRCodeVo) throws ServiceException;

	/**
	 *@Title: queryCodeByCode
	 *@Description: TODO()
	 *@return Response
	 *@author youjun
	 *@date 2017年7月4日 下午2:46:26
	 *@param qRCodeVo
	 *@param map 验证通过后,map中将存储如下key:
	 *	<ul>
	 *		<li>1、<b>qRCode:</b>扫码的二维码</li>
	 *		<li>2、<b>firstLevelQRCode:</b>一级码</li>
	 *		<li>3、<b>multistageLevelQRCode:</b>多级码</li>
	 *		<li>4、<b>product:</b>产品信息</li>
	 *		<li>5、<b>codeLevel:</b>所扫码的级别</li>
	 *	</ul>
	 *@param operationLevel 传入大于0的数字将会验证操作是否合法
	 *@return
	 *@throws ServiceException
	 */
	Response queryCodeByCode(QRCodeVo qRCodeVo, Map<String, Object> map, int operationLevel)
			throws ServiceException;
	
}
